package cn.tedu.knows.kafka.demo;

import cn.tedu.knows.kafka.vo.Message;
import com.google.gson.Gson;
import lombok.extern.slf4j.Slf4j;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;

@Component
@Slf4j
public class Producer {
    // 从Spring容器中获得能够向kafka发送消息的对象
    // 这个对象是Spring-kafka框架提供的,无需我们编写
    // KafkaTemplate<[话题名称的类型],[传递消息的类型]>
    @Resource
    private KafkaTemplate<String, String> kafkaTemplate;

    int i = 1;

    // 编写Spring定时任务的注解
    // 表示下面的方法在项目启动后,每隔10秒运行一次
    @Scheduled(fixedRate = 10000)
    public void sendMessage() {
        // 这个方法每隔10秒运行一次
        Message message = new Message()
                .setId(i++)
                .setContent("这是一个信息!")
                .setTime(System.currentTimeMillis());
        // 将message对象转化为json格式字符串
        Gson gson = new Gson();
        String json = gson.toJson(message);
        log.debug("即将发送的消息为:{}", json);
        // 执行发送消息
        kafkaTemplate.send("myTopic", json);
        log.debug("消息已发送");
    }
}
